<?xml version="1.0" encoding="UTF-8"?>
<html>
    <head>
        <link type="text/css" rel="stylesheet" href="./css/template.css" />
        <link type="text/css" rel="stylesheet" href="./css/SyntaxHighlighter.css" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>BEA WebLogic Workshop, l’IDE orientée SOA</title>
        <script language="javascript" src="./js/shInit.js" />
        <script language="javascript" src="./js/shCore.js" />
        <script language="javascript" src="./js/shBrushCpp.js" />
        <script language="javascript" src="./js/shBrushCSharp.js" />
        <script language="javascript" src="./js/shBrushCss.js" />
        <script language="javascript" src="./js/shBrushDelphi.js" />
        <script language="javascript" src="./js/shBrushJava.js" />
        <script language="javascript" src="./js/shBrushJScript.js" />
        <script language="javascript" src="./js/shBrushPhp.js" />
        <script language="javascript" src="./js/shBrushPython.js" />
        <script language="javascript" src="./js/shBrushRuby.js" />
        <script language="javascript" src="./js/shBrushSql.js" />
        <script language="javascript" src="./js/shBrushVb.js" />
        <script language="javascript" src="./js/shBrushXml.js" />
        <keywords>BEA, Beblogic, Workshop, IDE, SOA</keywords>
        <author>Maxime Vialette</author>
    </head>
    <body>
        <div class="chapter">
            <h2>Introduction</h2>
            <p>Vous pouvez dès à présent utiliser BEA WebLogic Server 10 (WLS) ainsi que BEA Workshop qui se couplent très bien à leur serveur afin de répondre à ces problématiques.</p>
            <p>Workshop Studio est bien évidemment axée sur Java EE 5.0,celui-ci supporte JSF, les EJB3, les annotations, …</p>
            <p>Des assistants permettent de créer rapidement des EJB 3, et un éditeur WYSIWYG (What You See Is What You Get) pour les JSF, JSP, les processus ainsi que les pageflow sont intégrés.</p>
            <p>Que ceux qui n’ont jamais utilisé Workshop ne s’inquiètent pas sur le temps de prise en main de cet IDE, c’est en réalité un ensemble de plugins ajoutés à Eclipse 3.2. La version de Workshop 8.1 n’était pas basée sur Eclipse, c’est donc une nouvelle orientation de BEA permettant de tirer profit de toute la plateforme Eclipse. Son utilisation est donc grandement facilitée et vous pouvez, tout comme avec Eclipse, le personnaliser à souhait. Vous pouvez même installer Workshop notamment grâce à l’ "Update Manager" d’un Eclipse existant (contenant déjà vos propres plugins).</p>
            <p>Deux versions de Workshop se déclinent : Workshop for WebLogic Platform et Workshop Studio. Ces IDE se basent, entre autre, sur WTP (WebTools Platform) &amp; Nitrox (une distribution d’Eclipse ayant déjà un ensemble de plugins, dont des éditeurs graphiques pour les JSP, …).</p>
            <p>Le principal attrait de Workshop est la présence d’un designer nommé "Page Flow Editor" qui permet de définir votre système de navigation de votre application J2EE. Que vous utilisiez Struts, Beehive ou JSF, vous pourrez utiliser cet éditeur de la même manière. C’est donc un niveau d’abstraction supérieur à J2EE qui permet de définir votre navigation sans avoir à être dépendant de l’implémentation utilisée.</p>
            <p>Lorsque vous utilisez Workshop, vous pouvez utiliser toutes les vues &amp; perspectives classiques présentes dans Eclipse, mais vous avez en plus une perspective "Workshop" qui se compose de plusieurs vues dont entre autres : "AppXplorer, DbXplorer, DbXaminer", l’éditeur ainsi que la vue "Properties". Ces vues vous permettront d’utiliser les fonctionnalités de Workshop.</p>
        </div>
        <div class="chapter">
            <h2>L’architecture de l’outil</h2>
            <p>La différence majeure entre Workshop for WebLogic Platform &amp; Workshop Studio réside dans la plateforme vers laquelle vous souhaitez destiner votre application. Voici le détail de l’architecture de ces deux outils :</p>
            <img height="100%" width="100%" src="./images/01-architectureOutils.jpg" />
            <p>Plusieurs déclinaisons de Workshop existent selon vos besoins : BEA Workshop for JSP (version gratuite), BEA Workshop for JSF, BEA Workshop for Struts et BEA Workshop Studio (ce dernier regroupant les trois précédent modules). Les trois dernières versions de Workshop sont disponibles en version d’évaluation 30 jours ce qui peut vous permettre de tester la plateforme et ainsi de vous faire votre propre avis sur cette gamme d’outils.</p>
        </div>
        <div class="chapter">
            <h2>Beehive</h2>
            <p>Beehive est un projet supporté par la fondation Apache qui est sortie en version 1.0 le 30 septembre 2005. Le but de Beehive est de faciliter le développement J2EE en ajoutant une couche d’abstraction supérieure à J2EE &amp; Struts. Beehive se décompose en 3 principales branches : NetUI, Controls et Web Service Metadata (WSM). Beehive NetUI fournit un ensemble de tags JSP, des composants comme les grilles et les arbres, ainsi que des composants intégrant JSF et Struts. Beehive Controls se charge de faciliter l’accès aux données gérées par vos applications d’entreprise. WSM simplifie l’utilisation des Web Services grâce à l’emploi des annotations.</p>
            <p>
                Une version 2.0 de Beehive devrait même voir le jour. Pour plus de détails sur Beehive vous pouvez vous rendre à l’adresse suivante, vous y trouverez notamment de la documentation et des tutoriaux :
                <a href="http://beehive.apache.org/" target="_blank">http://beehive.apache.org/</a>
                BEA Workshop peut utiliser Beehive, ce n’est cependant pas obligatoire mais recommandé car cela simplifiera vos développements et vous permettra d’intégrer plus facilement et correctement le principe de MVC grâce à ces composants "prêt à l’emploi". De plus, Beehive est en réalité la version open-source basée sur le framework WebLogic Workshop application. En effet, BEA a contribué à ce projet qui a très vite rencontré un vrai succès auprès de la communauté des développeurs. Vous n’êtes pas obligés d’utiliser Workshop pour intégrer Beehive, un projet de la fondation Eclipse nommé "Pollinate" vous propose une gestion de Beehive directement dans cet IDE.
            </p>
        </div>
        <div class="chapter">
            <h2>Cas pratique</h2>
            <p>Pour comprendre le fonctionnement de Beehive &amp; de Workshop, nous allons prendre un cas pratique simpliste : Un WebService interrogeant une base de données.</p>
            <p>Il faut donc que vous ayez une base de données avec une table contenant des données. Je vais utiliser MySQL 5 comme SGBDR et créer une base de données nommée "my_data_base". Dans cette base, je crée une table nommée "client" contenant trois colonnes "id", "firstname" et "lastname". Un driver MySql (fichier Jar) est déjà  present dans le répertoire lib de WLS. A présent vous devez configurer la source de donnée au sein de la console d’administration de WLS : http://localhost:7001/console/</p>
            <p>Le nom à donner à la datasource ici est "MySQL5TestDataSource" comme vous pouvez le voir dans l’image suivante :</p>
            <img src="./images/02-adminConsole.jpg" width="100%" height="100%" />
            <p>Nous allons à présent créer un nouveau projet grâce à Workshop for WebLogic Platform de type "Web" &gt; "Dynamic Web Projet" (les utilisateurs d’Eclipse et WTP reconnaîtront ce type de projet).</p>
            <p>Nous allons créer le Beehive Control qui nous permettra de dialoguer avec la datasource que nous venons de définir. Pour créer ce contrôle, que nous nommerons "DataSourceCtrl", utilisez le menu contextuel suivant :</p>
            <img src="./images/03-createJdbcCtrl.jpg" width="100%" height="100%" />
            <p>Voici le code à insérer dans votre interface :</p>
            <textarea name="code" class="java">import java.sql.SQLException;
				import org.apache.beehive.controls.system.jdbc.JdbcControl;
				import org.apache.beehive.controls.api.bean.ControlExtension;
				@ControlExtension
				@JdbcControl.ConnectionDataSource(jndiName = "MySQL5TestDataSource")
				public interface DataSourceCtrl extends JdbcControl {
				static public class Client {
				private int id;
				private String firstname;
				private String lastname;
				public int getId() {
				return id;
				}
				public void setId(int i) {
				id = i;
				}
				public String getFirstname() {
				return firstname;
				}
				public void setFirstname(String firstname) {
				this.firstname = firstname;
				}
				public String getLastname() {
				return lastname;
				}
				public void setLastname(String lastname) {
				this.lastname = lastname;
				}
				}
				@JdbcControl.SQL(statement = "SELECT ID, FIRSTNAME, LASTNAME FROM CLIENT WHERE ID = {id}")
				Client findClient(int id) throws SQLException;
				}</textarea>
            <p>Nous pouvons maintenant créer le service web, que nous nommerons "DataSourceWS". Pour cela utilisez le menu précédant et créez un "WebLogic Web Service". Dans l’éditeur de code, vous pouvez à présent utiliser le menu contextuel suivant afin de sélectionner votre précédant Beehive control à utiliser :</p>
            <img src="./images/04-insertCtrl.jpg" width="100%" height="100%" />
            <p>Ce menu vous permettra d’utiliser les annotations Beehive afin de faire de l’injection de dépendance. Utilisez également ce menu pour ajouter une nouvelle "Web Method" à votre WebService. Voici le contenu de "DataSourceWS" :</p>
            <textarea name="code" class="java" width="100%" height="100%">package com.completel.workshop.test.databasecontroller;
				import java.sql.SQLException;
				import javax.jws.WebMethod;
				import javax.jws.WebService;
				import org.apache.beehive.controls.api.bean.Control;
				import com.completel.workshop.test.databasecontroller.DataSourceCtrl.Client;
				@WebService
				public class DataSourceWS {
				@Control
				private DataSourceCtrl dataSourceCtrl;
				@WebMethod
				public String findClientByPrimaryKey(int id) {
				String res =  null;
				try {
				Client client = dataSourceCtrl.findClient(id);
				res = "firstname : " + client.getFirstname() + " , lastname : "+ client.getLastname();
				} catch (SQLException e) {
				e.printStackTrace();
				}
				return res;
				}
				}</textarea>
            <p>Il ne reste plus qu’à tester votre WebService en utilisant le menu contextuel sur le fichier et choisir "Run As" &gt; "Run on Server". WLS intègre en effet un client de test pour WebService. Voici la page qui vous sera proposée :</p>
            <img src="./images/05-autogenerateClient.jpg" width="100%" height="100%" />
            <p>Saisissez alors une valeur d’identifiant, validez et vous aurez le résultat suivant :</p>
            <img src="./images/06-autogenerateClientResult.jpg" width="100%" height="100%" />
            <p>Vous pourrez remarquer que vous avez une historisation des différents appels que vous aurez fait ainsi que la requête et réponse SOAP qui vous ont permis d’obtenir votre résultat. Il vous suffit ensuite de créer votre propre client, que ce soit en utilisant JSF, Beehive NetUI, Struts, ou simplement des JSP.</p>
        </div>
        <div class="chapter">
            <h2>Les évolutions</h2>
            <p>En ce qui concerne les évolutions coté WLS (WebLogic Server), là aussi des nouveautés sont apparues avec l’ajout d’un serveur SIP intégré (très pratique pour les entreprises étant dans le monde des télécommunications), d’outils pour faire de la répartition de charge (load-balancing), du clustering, du monitoring…
				Cette nouvelle version de Workshop, basée sur Eclipse, permet de profiter de tout ses avantages : système de plugins, auto-complétion réactive et intelligente, fonction avancée du débuggeur, …</p>
            <p>Elle contient également beaucoup de fonctionnalités, surtout grâce aux assistants comme des éditeurs visuels pour les JSP, JSF, Struts et EJB3. Un outil d’ORM (Object Relational Mapping) pour les EJB3 est également disponible et permet de recréer très facilement des Entity Beans à partir d’une base de données.</p>
            <p>D’autres produits de BEA devraient également être suivis, comme BEA AquaLogic qui est en réalité leur ESB qui intègre également une gestion des services. Lorsque l’on a des besoins d’intégration c’est un outil pouvant faciliter l’interrogation des données.</p>
            <p>La fondation Eclipse a même décerné un « Community awards 2006 » comme étant le « Best Commercial Eclipse-based Tool » pour BEA Workshop. Un produit à suivre donc pour tous ceux qui font de l’intégration.</p>
            <p>A vous maintenant de tester ces produits, et comme dirait BEA "Il est temps de commencer à penser liquide". A méditer…</p>
        </div>
    </body>
</html>

